package com.wen.chainPattern;

/**
 * 本次demo主要是为了责任链的处理逻辑
 * 模拟逻辑为: 小孩想出去完   默认前提为 奶奶>爷爷>妈妈>爸爸   走这样的逻辑  只要一个统一就可以出去玩耍
 */
public abstract class Handler {

    public Handler nextHandler;

    /**
     * 每个handler统一的处理逻辑
     *
     * @param type
     * @param request
     */
    public final void dealMessage(String type, String request) {
        //如果是当前的处理级别那就进行处理 不是当前级别 下个handler有的话那就下个处理 反之的话就默认为不通过
        if (getType().equals(type)) {
            echo(request);
        }else if(nextHandler != null){
            nextHandler.dealMessage(type,request);
        }else {
            System.out.println("收到请求 request" + request + "本次请求结果为不同意,原因是因为家里没人");
        }
    }

    public abstract String getType();


    public void setNextHandler(Handler handler){
        nextHandler = handler;
    }


    /**
     * 具体处理业务方式
     *
     * @param request
     */
    public abstract void echo(String request);
}
